The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.
Computing devices can often handle recording and playback of multiple types of media. The media that may be recorded and played back by computing devices often includes numerous forms/formats of video, and numerous forms/formats of audio. Within such computing devices, many applications may be competing to record or play back media. Examples of types of applications that may attempt to record or play back media within a handheld computing device include, for example, a telephone application, a web browser, an e-mail application, short message service (SMS), a music player, and video player.
Within computing devices, the various software applications that record or play back the media can all contend for use of the various audio resources, and have different rules and protocols for doing so. Some of these rules and protocols may conflict from one application to another.
To complicate things further, many computing devices also have multiple possible inputs and outputs for recording and playback of the media. For example, a handheld computing device may have a line out port, a headphone port, a docking port, and multiple speakers, each of which may serve a different function and have different capabilities.
One way to handle the contention among the applications for the recording and playback resources of a computing device is to design each application with logic to check the state of settings of the device, letting each application decide for itself where, when and how to record or play its media. Unfortunately, using this approach, each software application developer has to implement code for a behavior tree that attempts to take into account the variety of factors that can impact media recording and playback on a device. The result may be less-than-optimal media handling decisions made by more-complex-than-necessary applications.